\section{Septième itération}
Dans cette partie, on aborde deux méthodes qui permettent de diminuer la portée des méthodes internes pour qu'elles ne soient pas accessible en dehors du package. Dans le déroulement des explications nous allons supposer afin d'alléger les explications que l'on fait la méthode 1 sur la classe Passager et la Méthode 2 sur la classe Bus tout en sachant que l'on a aussi réalisé la méthode 1 pour Bus et la méthode 2 pour Passager.
\subsection{Première méthode}
Dans cette méthode on change l'interface Passager en une classe abstraite. Ce changement permet de gérer la portée des méthodes de la classe Passager.
Quand c'était une interface toute les méthodes étaient public par défault. Une classe abstraite peut rendre les méthode de la classe abstraite Passager protected pour les limiter au paquetage. Comme ça le client ne pourra pas les utiliser donc le problème est réglé.




\subsection{Deuxième méthode}
Le masquage de l'information ici va se faire au niveau de l'instanciation des objets qui implémentent la l'interface Bus et Transport. Dans notre cas les objets seront des Autobus. Le client ne pourra plus instancier d'Autobus directement. On créer la classe FabriqueBus comme on le voit dans le code ci-dessous.




\begin{verbatim}
public class FabriqueBus {
	public static Transport faireBus(long nbAssis,long nbDebout){
	Transport t= new Autobus(nbAsssis,nbDebout);
	return t;
	}
}
\end{verbatim}
\\
Cette classe appartient au paquetage et est publique donc accessible en dehors de ce dernier. Elle définit une méthode de classe ( caractérisée par le mot clé static) qui est publique et qui comme on le voit instancie un Autobus (ce qui est possible car le constructeur Autobus a une portée de paquetage).
Cette méthode renvoie une référence vers une variable Transport. Le client ne manipule alors que des variable Transport et donc ne peut appeller que les méthodes l'interface Transport.   
